package com.pfzy.utildemo.activity.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

import org.greenrobot.greendao.query.QueryBuilder;

import java.util.List;

public class DBManager {
    private static DBManager instance;
    private Context mContext;
    /**
     * DaoSession
     */
    private DaoSession mDaoSession;

    public DBManager() { }

    public static DBManager getInstance() {
        if (instance == null) {
            synchronized (DBManager.class) {
                if (instance == null) {
                    instance = new DBManager();
                }
            }
        }
        return instance;
    }

    public void init(Context context){
        mContext = context;
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(mContext, "util.db");
        SQLiteDatabase db = helper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(db);
        mDaoSession = daoMaster.newSession();
    }

    /**
     * 插入一条记录，表里面要没有与之相同的记录
     */
    public void insert(Passenger data) {
        mDaoSession.getPassengerDao().insert(data);
    }

    /**
     * 删除数据
     */
    private void delete(Passenger data) {
        mDaoSession.getPassengerDao().delete(data);
    }

    private void update(Passenger data) {
        mDaoSession.getPassengerDao().update(data);
    }

    private void clear() {
        mDaoSession.getPassengerDao().deleteAll();
    }

    private List<Passenger> query(String UserId) {
        QueryBuilder<Passenger> queryBuilder = mDaoSession.getPassengerDao().queryBuilder();
        queryBuilder
                .where(PassengerDao.Properties.UserId.ge(UserId))
                .orderAsc(PassengerDao.Properties.UserId);
        return queryBuilder.list();
    }

    public List<Passenger> queryAll() {
        QueryBuilder<Passenger> queryBuilder = mDaoSession.getPassengerDao().queryBuilder();
        return queryBuilder.list();
    }


//    /**
//     * 会自动判定是插入还是替换
//     * @param personInfor
//     */
//    public void insertOrReplace(MaintenaceBean personInfor){
//        maintenaceBeanDao.insertOrReplace(personInfor);
//    }
//
//    /**
//     * 插入一条记录，表里面要没有与之相同的记录
//     * @param personInfor
//     */
//    public long insert(MaintenaceBean personInfor){
//        return  maintenaceBeanDao.insert(personInfor);
//    }
//    public long insertFaceSafe(FaceSafeBean personInfor){
//        return  faceSafeBeanDao.insert(personInfor);
//    }
//    public long insertAssess(AssessBean personInfor){
//        return  assessBeanDao.insert(personInfor);
//    }
//    public long insertTask(TaskBean personInfor){
//        return  taskBeanDao.insert(personInfor);
//    }
//
//    /**
//     * 更新数据
//     * @param personInfor
//     */
//    public void update(MaintenaceBean personInfor){
////        MaintenaceList mOldPersonInfor = maintenaceListDao.queryBuilder().where(MaintenaceListDao.Properties.Id.eq(personInfor.getId())).build().unique();//拿到之前的记录
////        MaintenaceList mOldPersonInfor = maintenaceListDao.queryBuilder()
////                .where( MaintenaceListDao.Properties.Id.eq(personInfor.getUuid()), MaintenaceListDao.Properties.Type_id.eq(personInfor.getType_id()) )
////                .build()
////                .unique();//拿到之前的记录
//        if(personInfor !=null){
//            maintenaceBeanDao.update(personInfor);
//        }
//    }
//    public void updateFaceSafe(FaceSafeBean personInfor){
//        if(personInfor !=null){
//            faceSafeBeanDao.update(personInfor);
//        }
//    }
//    public void updateAssess(AssessBean personInfor){
//        if(personInfor !=null){
//            assessBeanDao.update(personInfor);
//        }
//    }
//    public void updateTask(TaskBean personInfor){
//        if(personInfor !=null){
//            taskBeanDao.update(personInfor);
//        }
//    }
//
//    /**
//     * 按条件查询数据
//     */
//    public List<MaintenaceBean> searchByWhereUUID(String Uuid){
//        List<MaintenaceBean> personInfors =  maintenaceBeanDao.queryBuilder()
//                .where(MaintenaceBeanDao.Properties.Uuid.eq(Uuid))
//                .list();
//        return personInfors;
//    }
//    public List<MaintenaceBean> searchByWhere(String Uuid, int Type_id){
//        List<MaintenaceBean> personInfors =  maintenaceBeanDao.queryBuilder()
//                .where(MaintenaceBeanDao.Properties.Uuid.eq(Uuid), MaintenaceBeanDao.Properties.Type_id.eq(Type_id))
//                .list();
////        List<MaintenaceList> personInfors = (List<MaintenaceList>) maintenaceListDao.queryBuilder()
////                .where(MaintenaceListDao.Properties.Uuid.eq(Uuid), MaintenaceListDao.Properties.Type_id.eq(Type_id))
////                .build()
////                .unique();
////        List<MaintenaceList>personInfors = (List<MaintenaceList>) maintenaceListDao.queryBuilder().where(MaintenaceListDao.Properties.Name.eq(wherecluse)).build().unique();
//        return personInfors;
//    }
//
//    public List<FaceSafeBean> searchFaceSafeByWhere(String Uuid, int Type_id){
//        List<FaceSafeBean> personInfors =  faceSafeBeanDao.queryBuilder()
//                .where(FaceSafeBeanDao.Properties.Uuid.eq(Uuid), FaceSafeBeanDao.Properties.Type_id.eq(Type_id))
//                .list();
//        return personInfors;
//    }
//
//    public List<AssessBean> searchAssessByWhere(String Uuid, int Type_id){
//        List<AssessBean> personInfors =  assessBeanDao.queryBuilder()
//                .where(AssessBeanDao.Properties.Uuid.eq(Uuid), AssessBeanDao.Properties.Type_id.eq(Type_id))
//                .list();
//        return personInfors;
//    }
//
//    public List<TaskBean> searchTaskByWhereUUID(String Uuid){
//        List<TaskBean> personInfors =  taskBeanDao.queryBuilder()
//                .where(TaskBeanDao.Properties.Uuid.eq(Uuid))
//                .list();
//        return personInfors;
//    }
//
//    /**
//     * 查询所有数据
//     */
//    public List<MaintenaceBean> searchAll(){
//        List<MaintenaceBean> personInfors = maintenaceBeanDao.queryBuilder().list();
//        return personInfors;
//    }
//
//    /**
//     * 删除数据
//     */
//    public void delete(String wherecluse){
//        maintenaceBeanDao.queryBuilder()
//                .where(MaintenaceBeanDao.Properties.Name.eq(wherecluse))
//                .buildDelete()
//                .executeDeleteWithoutDetachingEntities();
//    }
}
